package com.pablissimo.sonar; import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.batch.sensor.SensorContext; public class PathResolverImpl implements PathResolver { private static final Logger LOG = LoggerFactory.getLogger(TsLintExecutorImpl.class); @Override public String getPath(SensorContext context, String settingKey, String defaultValue) { // Prefer the specified path String toReturn = context.settings().getString(settingKey); // Fall back to a file system search if null or doesn't exist if (toReturn == null || toReturn.isEmpty()) { LOG.debug("Path {} not specified, falling back to {}", settingKey, defaultValue); toReturn = defaultValue; } else { LOG.debug("Found {} path to be '{}'", settingKey, toReturn); } return getAbsolutePath(context, toReturn); } String getAbsolutePath(SensorContext context, String toReturn) { if (toReturn != null) { File candidateFile = new java.io.File(toReturn); if (!candidateFile.isAbsolute()) { candidateFile = new java.io.File(context.fileSystem().baseDir().getAbsolutePath(), toReturn); } if (!doesFileExist(candidateFile)) { return null; } return candidateFile.getAbsolutePath(); } return null; } boolean doesFileExist(File f) { return f.exists(); } }